Asynchronous transfer mode (ATM) is a class of digital switching technologies for computer networks. ATM networks relay and route traffic by means of a virtual circuit identifier (VCI) and a virtual path identifier (VPI) contained within the cell. Compared to common packet technologies, such as X.25 or frame relay, ATM uses relatively short, fixed length units of information called cells. In applications utilizing ATM, larger packets at a source are first broken up into these fixed length packets (ATM cells), transmitted, and then reassembled at a destination. ATM cells are 53 bytes long. They consist of a 5-byte header containing a virtual circuit identifier, virtual path identifier, and other information, and a 48 byte information field. The header of an ATM cell contains all the information the network needs to relay the cell from one node to the next over a pre-established route. User data is contained in the remaining 48 bytes.
ATM uses virtual circuits to pass data between two nodes. These connections between two nodes are termed "virtual circuits" to distinguish them from dedicated circuits. A virtual circuit is a path made up of a number of links between a first node and a second node in the network. ATM cells transmitted on the virtual circuit always traverse the same path between the first node and the second node. When cells are successfully received at the destination, they are reassembled into information packets. Virtual circuits allow common physical links to be shared among multiple users.
There are two types of virtual connections (also known as virtual circuits). Each virtual circuit is identified by a unique virtual connection number. A first type of virtual circuit is the Permanent Virtual Circuit (PVC). For each PVC, there is a predetermined, permanent VCN (Virtual Connection Number) which is defined at each switch or end node before the network is up and running. A second type of virtual circuit is the SVC (Switched Virtual Circuit). SVC connections are set up or disconnected while the network is running. SVC's are set up by utilizing a signalling protocol which assigns a currently available VCN to the connection. A VCN currently assigned to an existing SVC becomes available when the existing SVC is closed.
With ATM, the successful transmission of packets from a source to a destination requires successful delivery of all the ATM cells derived from the original information packet. If any one cell is lost, the entire packet must be re-transmitted. When the ATM station repeatedly tries to resend the original information packet, the network becomes increasingly loaded as more network congestion occurs and more cells are lost. Also, end-systems and switches in the network have limits to the number of virtual connections they can keep open. This is because they have a limited amount of memory that is available to keep the virtual connection state information. Reusing virtual circuits is therefore often necessary. This reuse of virtual circuits needs to be done without cell loss which would otherwise result in inefficiency.
Cells may be lost at a destination system or a receiving node when the virtual connection is closed in order to re-assign the VCN of that connection to another virtual connection. If that virtual connection is closed and reassigned to a second virtual connection before all of the transmitted cells arrive and get transferred into memory, the cells of the first virtual connection are lost and the cells of the second virtual connection will not belong with the data already received. Similar to the destination system, cells may be lost if the source system closes the virtual connection before all the cells have been transmitted. The destination system needs a way to determine that all of the received cells are delivered and the source system needs a way to determine that all the cells have been transmitted. The destination system also needs to see that none of the cells from an old virtual connection get delivered to an application that is reusing the virtual connection.
In current ATM implementations, a worst case time duration for fully receiving and transmitting cells to memory is determined and the destination system waits for that period of time before reusing a virtual connection after a close command has been issued. The source system in current implementations simply waits until all previously-queued transmit cells or packets are transmitted, regardless of network conditions. If all the cells have not yet been transmitted, when the virtual connection is closed, the cells and the packets they belong to are lost. These wait periods are inefficient and sometimes ineffective ways of assuring that a virtual connection may be closed and reassigned. Furthermore, these wait periods depend on the system issuing a close command for the virtual circuit having assured itself that no more data was sent on that virtual circuit before the system issues the close command. The wait to ensure that all pending data goes out of the sending system can be large, especially in a congested network.
The ability to reuse VCNs quickly is especially important for lower cost adapters and switches that support only a limited number of VCNs. Avoiding long wait periods improves overall adapter and switch performance and enables adapter and switches to efficiently use the smaller pool of VCNs.
It is therefore desirable to have a more efficient and effective means for closing virtual circuits.